import router from '@/router'
import store from '@/store'

router.beforeEach(async(to, from, next) => {
//   if (store.getters.token) {
//     // 有 token 去登录页=>首页
//     if (to.path === '/login') {
//       next('/')
//     } else {
//       // 有 token 不是去登录页 => 放行
//       next()
//     }
//   } else {
//     const whiteList = ['/login', '/404']
//     if (whiteList.includes(to.path)) {
//       // 没 token 允许不登录就查看的, 放行
//       next()
//     } else {
//       // 没 token 去首页 => 跳转到登录页
//       next('/login')
//     }
//   }

  // -------------------------
  const token = store.getters.token
  const url = to.path
  const whiteList = ['/login', '/404']
  // 有token 去登陆页 =》首页
  if (token && url === '/login') {
    next('/')
  }
  // 有token 不去登陆页 =》放行
  if (token && url !== '/login') {
    if (!store.state.user.userInfo.userId) {
      // 加载数据
      await store.dispatch('user/getUserInfo')
      // 调用路由的筛选
      const routes = await store.dispatch('permission/filterRoutes', store.state.user.userInfo.roles.menus)
      // router 有一个方法, 可以追加路由配置 router.addRoutes(配置数组)
      router.addRoutes([
        ...routes,
        { path: '*', redirect: '/404', hidden: true }
      ])
      // 刷新的时候不会跳转到其他页面，让他在当前的地址再跳转一遍
      next(to.path)
      return
    }
    next()
  }
  // 没token 去登陆页 =》放行
  if (!token && whiteList.includes(url)) {
    next()
  }
  // 没token 去登陆页 =》登录页
  if (!token && !whiteList.includes(url)) {
    next('/login')
  }
})
